layui.define("form", function(exports) {
	var MOD_NAME = "multiSelect",
		o = layui.jquery,
		form = layui.form,
		selected_vals = [];

	o('select[multiple]').each(function(idx, item) {
		var t = o(this);
		t.next().addClass('multi').find('.layui-select-title').click(function() {
			selected_vals[idx] && o(this).find('input').val(selected_vals[idx].join(','));
		}).next().find('dd').each(function() {
			var dt = o(this),
				checked = dt.hasClass('layui-this') ? 'checked' : '',
				title = dt.text(),
				disabled = dt.attr('lay-value') === '' ? 'disabled' : '';
			dt.html('<input type="checkbox" lay-skin="primary" title="' + title + '" ' + checked + ' ' + disabled + '>');
		}).click(function(e) {
			var dt = o(this);
			// 点击下拉框每一行触发选中和反选
			if(e.target.localName == 'dd' && dt.attr('lay-value') !== '') {
				var status = dt.find('.layui-form-checkbox').toggleClass('layui-form-checked').hasClass('layui-form-checked');
				dt.find('input').prop('checked', status);
			}
			// 选中值存入数组
			selected_vals[idx] = [];
			// 禁止下拉框收回
			dt.parents('.layui-form-select').addClass('layui-form-selected');
			// 先清除真实下拉款选中的值，在下面循环中重新赋值选中
			t.find('option').prop('selected', false);
			dt.parent().find('.layui-form-checked').each(function() {
				var val = o(this).parent().attr('lay-value');
				t.find('option[value=' + val + ']').prop('selected', true);
				selected_vals[idx].push(o(this).find('span').text());
			})
			// 显示已选信息
			dt.parent().prev().find('input').val(selected_vals[idx].join(','));
		});
		form.render('checkbox');
	})
	exports(MOD_NAME)
});